<header>
    指针
</header>
<p>
    指针只是一个代表一个地址的十六进制数，指针的类型，指的是指针指向的变量的类型，比如数组变量本身就是一个指针。
</p>
<h2>
    定义&获取
</h2>
<pre tag="javascript">
    int iValue = 10;
</pre>
<p>
    可以通过&运算符获取变量iValue的地址并保存到intP中去：
</p>
<pre tag="javascript">
    int *iPointer = &iValue;
</pre>
<h2>
    运算
</h2>
<p>
    指针可以进行运算：++、--、+、-，或者关系运算符进行比较：==、&lt;和&gt;。
</p>
<p>
    比如我们现在有一个数组：
</p>
<pre tag="javascript">
    int arr[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
</pre>
<p>
    定义一个指针，指向数组的第一个元素：
</p>
<pre tag="javascript">
int *index = &arr[0];
printf("此时index存储的地址为：%p，值为：%d\n", index, *index);
</pre>
<p>
    此时打印的值就是10。
</p>
<pre tag="javascript">
    index++;
</pre>
<p>
    上面我们把地址加1，再打印的话，值就变成了20。
</p>
<h2>
    指向指针
</h2>
<p>
    指针还可以指向指针，比如：
</p>
<pre tag="javascript">
int j = 128;
int *jPointer = &j;
int **jPointerPointer = &jPointer;

printf("j的值：%d\n", j);
printf("jPointer指向的变量的值：%d\n", *jPointer);
printf("jPointerPointer指向的变量指向的变量的值：%d\n", **jPointerPointer);
</pre>
<h2>
    结构体和指针
</h2>
<p>
    结构体中对指针的使用会稍微特殊一点，主要因为结构体本身的特殊性，想使用结构体中的一个值，一般分为通过结构体自身和指向结构体的指针两种情况，具体看下面的例子：
</p>
<pre tag="javascript">
struct Node{
    int val;
};

struct Node node; //先建立一个结构体数据
node.val = 1;

struct Node *nodeP; //创建一个指向刚刚的结构体的指针
nodeP = &node;

printf("%d\n", nodeP->val);//指向结构体的指针用->
printf("%d\n", node.val);//结构体自身用.
</pre>